'''
封装 logging类

'''
import logging

class LoggerHandler(logging.Logger):
    # todo 如果不继承logging.Loger,类需要 重新自己定义debug，info等
    def __init__(self,
                 name='python25',
                levelname='DEBUG',
                file=None,
                format='%(filename)s-%(lineno)s-%(name)s-%(levelname)s-%(message)s'):
        # 实例化 收集器
        super().__init__(name)
        # todo 继承之后，直接用 slef.方法名 调用父类方法
 #      收集器 等级
        self.setLevel(levelname)

        # 处理器
        # 格式
        fmt = logging.Formatter(format)
        if file:
            file_handler = logging.FileHandler(file)

            file_handler.setLevel(levelname)

            file_handler.setFormatter(fmt)

            self.addHandler(file_handler)
        # 在控制台输出的报错
        strem_handler = logging.StreamHandler()

        strem_handler.setLevel(levelname)

        self.addHandler(strem_handler)
        strem_handler.setFormatter(fmt)

# todo 因为如果想整个项目的 log日志在 ，同一个文件里面
# 又怕麻烦写错，可以直接在其他地方导入 logger即可
# logger = LoggerHandler('python',"demo_log.txt")

if __name__ == '__main__':
    log = LoggerHandler('python')

    log.debug('hello')